# -*- coding: utf-8 -*-

"""
 *
 * - Ime
 *
 *  - kratki opis
 *
 * Autori: Koki007
 * Verzija: 0.1
 * Datum: 26.02.2011
 *
"""


import pygame
from pygame.locals import *
from sys import exit
import os

from upravitelj_stanja import cUpravitelj_stanja

# instancira sve pyGame i sve potrebne klase
class cEngine:

    def __init__(self, x, y, zadani_fps):
        self.pokrenuti = True
        self.verzija = "v0.1" # :D
        self.rezolucija = (x, y)
        self.zadani_fps = zadani_fps
        
        print "Pokretanje DB_engine-a", self.verzija
        
        print "   - Inicijaliziranje Zvuka"
        pygame.mixer.pre_init(frequency=44100, size=-16, channels=2, buffer=512) # mixer mora biti inicijaliziran prije videa
        
        print "   - Inicijaliziranje Pygame-a"
        pygame.init()
        os.environ['SDL_VIDEO_CENTERED'] = '1'
        
        print "   - Stvaranje glavnog buffera - rezolucija: ", str(x), str(y) 
        self.glavni_buffer = pygame.display.set_mode((x, y), DOUBLEBUF)

        print "   - Inicijaliziranje Tajmera i Upravitelja stanja"
        self.tajmer = pygame.time.Clock()
        self.upravitelj_stanja = cUpravitelj_stanja(self)
        print "   - inicijaliziran DB_engine\n"
        pass
        
        
        
    def pokreni(self):
        print "\nPOKRENUTA GLAVNA PETLJA\n"
        while self.pokrenuti == True:

            # PROVJERA INPUTA
            for event in pygame.event.get():
            
                # IGRA PROVJERAVA INPUT
                self.upravitelj_stanja.primi_event(event)
                
                # TEMP - za sada se gasi, poslije se proslijedi dalje, igra ce hjeti znati kad se je pokusava zatvoriti
                if event.type == QUIT:
                    self.izlaz()
                
                # TEMP - ako se pritisne ESC gasi se engine 
                #if event.type == KEYDOWN:
                    #if event.key == K_ESCAPE:
                        #self.izlaz()
            # //PROVJERA INPUTA
        

            # AZURIRANJE IGRE
            self.upravitelj_stanja.azuriraj()
        

            # CRTANJE IGRE
            self.upravitelj_stanja.crtaj()
            #pygame.display.flip()
            pygame.display.update()


            # OGRANICANICI FRAMERATE na zadani fps
            self.tajmer.tick(self.zadani_fps)
        print " - ENGINE: kraj glavne petlje"
        pass

     
    # sve sto se treba obaviti prije nego se "ugasi" engine i aplikacija
    def izlaz(self):
        print " ==> aktivirano gasenje DB_engine-a\n"
        self.pokrenuti = False
        
        
    #vrati rezoluciju kao tuple sa vrijednosti x i y ... (x,y)
    def provjeri_rezoluciju(self):
        return self.rezolucija
        
        
